Contents

1 Preamble

1.1 Dependencies

library(Rarr)
library(EBImage)
library(ggplot2)
library(jsonlite)
library(SpatialData)
library(SingleCellExperiment)

1.2 Introduction

2 ImageArray

2.1 Constructor

path <- file.path("extdata", "mibitof", "images", "point8_image")
zarr <- system.file(file.path(path, "0"), package = "SpatialData", mustWork = TRUE)
json <- system.file(file.path(path, ".zattrs"), package = "SpatialData", mustWork = TRUE)

za <- read_zarr_array(zarr)
md <- fromJSON(json)
(ia <- ImageArray(za, md))
## class: ImageArray
## axiis(cyx): 3 1024 1024 
## |-time(0):  
## |-space(2): y x 
## |-channel(1): c 
## channels: 0 1 2

2.2 readImage

path <- "extdata/mibitof/images/point8_image/0"
path <- system.file(path, package = "SpatialData")
(ia <- readImage(path))
## class: ImageArray
## axiis(cyx): 3 1024 1024 
## |-time(0):  
## |-space(2): y x 
## |-channel(1): c 
## channels: 0 1 2

3 SpatialData

path <- "extdata/mibitof"
path <- system.file(path, package = "SpatialData")
(spd <- readSpatialData(path))
## class: SpatialData
## images(3): point16_image point23_image point8_image 
## labels(3): point16_labels point23_labels point8_labels 
## shapes(0): 
## points(0): 
## table: 36 3309

3.1 Accessors

elementNames(spd)
## [1] "images" "labels" "table"
imageNames(spd)
## [1] "point16_image" "point23_image" "point8_image"
(img <- element(spd, "images", 1))
## class: ImageArray
## axiis(cyx): 3 1024 1024 
## |-time(0):  
## |-space(2): y x 
## |-channel(1): c 
## channels: 0 1 2
(lab <- element(spd, "labels", 1))
## class: ImageArray
## axiis(yx): 1024 1024 
## |-time(0):  
## |-space(2): y x 
## |-channel(0):  
## channels:

4 Visualization

mtx <- as.array(aperm(img))
plot(Image(mtx/255, dim(mtx), "Color"))

mtx <- as.array(aperm(lab))
plot(Image(mtx, dim(mtx)))

(sce <- aggregateImage(spd))
## class: SingleCellExperiment 
## dim: 3 1107 
## metadata(0):
## assays(1): ''
## rownames: NULL
## rowData names(0):
## colnames(1107): 1 2 ... 1106 1107
## colData names(2): x y
## reducedDimNames(0):
## mainExpName: NULL
## altExpNames(0):
cd <- data.frame(colData(sce), z = assay(sce)[1, ])
ggplot(cd, aes(x, y, col = z)) + geom_point() + 
  scale_color_viridis_c() + scale_y_reverse()

5 Transformations

# utility for image plotting with 'EBImage'
.plot <- \(i, c="Color") {
  j <- as.array(aperm(i))
  plot(Image(j/max(j), dim(j), c))
}
path <- file.path("extdata", "raccoon_scale")
path <- system.file(path, package = "SpatialData")
(spd <- readSpatialData(path))
## class: SpatialData
## images(1): raccoon 
## labels(1): segmentation 
## shapes(1): circles 
## points(0): 
## table:
(i <- image(spd))
## class: ImageArray
## axiis(cyx): 3 768 1024 
## |-time(0):  
## |-space(2): y x 
## |-channel(1): c 
## channels: 0 1 2
coords(i)
## DataFrame with 1 row and 6 columns
##    input.name output.name                             input.axes
##   <character> <character>                                 <list>
## 1         cyx      global c:channel:NA,y:space:unit,x:space:unit
##                              output.axes        type   data
##                                   <list> <character> <list>
## 1 c:channel:NA,y:space:unit,x:space:unit       scale  1,1,2

5.1 scaleImage

j <- scaleImage(i, c(1,1,2))
par(mfrow=c(1,2)); .plot(i); .plot(j)

5.2 rotateImage

j <- rotateImage(i, 30)
par(mfrow=c(1,2)); .plot(i); .plot(j)

6 Appendix

6.1 Session info

sessionInfo()
## R version 4.3.0 (2023-04-21)
## Platform: aarch64-apple-darwin20 (64-bit)
## Running under: macOS Ventura 13.2.1
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Europe/Zurich
## tzcode source: internal
## 
## attached base packages:
## [1] stats    graphics utils    stats4   methods  base    
## 
## other attached packages:
##  [1] SingleCellExperiment_1.22.0 SummarizedExperiment_1.30.0
##  [3] Biobase_2.60.0              GenomicRanges_1.52.0       
##  [5] GenomeInfoDb_1.36.0         IRanges_2.34.0             
##  [7] S4Vectors_0.37.4            BiocGenerics_0.45.3        
##  [9] MatrixGenerics_1.12.0       matrixStats_0.63.0         
## [11] SpatialData_0.99            jsonlite_1.8.4             
## [13] ggplot2_3.4.2               EBImage_4.42.0             
## [15] Rarr_1.0.0                  BiocStyle_2.28.0           
## 
## loaded via a namespace (and not attached):
##  [1] tidyselect_1.2.0        viridisLite_0.4.1       farver_2.1.1           
##  [4] dplyr_1.1.2             filelock_1.0.2          arrow_11.0.0.3         
##  [7] R.utils_2.12.2          bitops_1.0-7            fastmap_1.1.1          
## [10] RCurl_1.98-1.12         digest_0.6.31           lifecycle_1.0.3        
## [13] paws.storage_0.2.0      magrittr_2.0.3          compiler_4.3.0         
## [16] rlang_1.1.0             sass_0.4.5              tools_4.3.0            
## [19] utf8_1.2.3              yaml_2.3.7              knitr_1.42             
## [22] labeling_0.4.2          S4Arrays_1.0.0          htmlwidgets_1.6.2      
## [25] bit_4.0.5               curl_5.0.0              here_1.0.1             
## [28] reticulate_1.28         DelayedArray_0.25.0     abind_1.4-5            
## [31] zellkonverter_1.9.0     withr_2.5.0             purrr_1.0.1            
## [34] R.oo_1.25.0             grid_4.3.0              fansi_1.0.4            
## [37] grDevices_4.3.0         colorspace_2.1-0        scales_1.2.1           
## [40] cli_3.6.1               rmarkdown_2.21          crayon_1.5.2           
## [43] generics_0.1.3          rstudioapi_0.14         httr_1.4.5             
## [46] cachem_1.0.7            stringr_1.5.0           zlibbioc_1.46.0        
## [49] datasets_4.3.0          parallel_4.3.0          assertthat_0.2.1       
## [52] BiocManager_1.30.20     XVector_0.40.0          tiff_0.1-11            
## [55] basilisk_1.11.3         vctrs_0.6.2             Matrix_1.5-4           
## [58] dir.expiry_1.7.0        bookdown_0.33           fftwtools_0.9-11       
## [61] bit64_4.0.5             magick_2.7.4            jpeg_0.1-10            
## [64] locfit_1.5-9.7          jquerylib_0.1.4         glue_1.6.2             
## [67] stringi_1.7.12          gtable_0.3.3            munsell_0.5.0          
## [70] tibble_3.2.1            pillar_1.9.0            basilisk.utils_1.11.2  
## [73] htmltools_0.5.5         GenomeInfoDbData_1.2.10 R6_2.5.1               
## [76] rprojroot_2.0.3         evaluate_0.20           lattice_0.21-8         
## [79] highr_0.10              R.methodsS3_1.8.2       png_0.1-8              
## [82] paws.common_0.5.6       bslib_0.4.2             Rcpp_1.0.10            
## [85] xfun_0.39               pkgconfig_2.0.3